﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using App_Persistencia;
using System.Data;

namespace App_Negocio
{
    public class Servicio_Adicional
    {
        private int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string nombre;
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        private float precio;
        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }
        private int tipo_Servicio;
        public int Tipo_Servicio
        {
            get { return tipo_Servicio; }
            set { tipo_Servicio = value; }
        }
        private int proveedor_Servicio;
        public int Proveedor_Servicio
        {
            get { return proveedor_Servicio; }
            set { proveedor_Servicio = value; }
        }

        private Servicio_Adicional_Proveedor proveedor_ServicioRef;

        public Servicio_Adicional_Proveedor Proveedor_ServicioRef
        {
            get { return proveedor_ServicioRef; }
            set { proveedor_ServicioRef = value; }
        }

        Servicio_Adicional_Tipo tipo_ServicioRef;
        public Servicio_Adicional_Tipo Tipo_ServicioRef
        {
            get { return tipo_ServicioRef; }
            set { tipo_ServicioRef = value; }
        }

        public void buscarUnServicio()
        {
            Servicio_Adicional_Data sAdicData = new Servicio_Adicional_Data();
            sAdicData.Id = id;

            try
            {
                sAdicData.buscarUnServicio();
                precio = sAdicData.Precio;
              
            }
            catch (ApplicationException)
            {
                //si se genera una Exepcion de este tipo quiere decir que no se pudo grabar el registro
                //genero una nueva exepcion para la capa superior
                throw new ApplicationException();
            }
        }

        public DataView popularsAdicionalConTipo()
        {
            Servicio_Adicional_Data sAdicional = new Servicio_Adicional_Data();

            DataView dataView = sAdicional.popularsAdicionalConTipo();

            return dataView;
        }

        public static DataTable listarServicios_Adicionales_Tabla(int idPresupuesto)
        {
            Servicio_Adicional_Data sa = new Servicio_Adicional_Data();
            DataTable tabla = sa.buscarServicios_AdicionalesPorPresupuesto(idPresupuesto);
            return tabla;
        }

        public static List<Servicio_Adicional> listarServicios_Adicionales_Lista(Presupuesto presu)
        {
            List<App_Negocio.Servicio_Adicional> lista = new List<Servicio_Adicional>();
            DataTable tabla = listarServicios_Adicionales_Tabla(presu.Id);

            presu.SAdicionalesTabla = tabla.DefaultView;

            App_Negocio.Servicio_Adicional sa = new Servicio_Adicional();
            foreach (DataRow fila in tabla.Rows)
            {
                sa = new Servicio_Adicional();
                sa.Id = int.Parse(fila["SAId"].ToString());
                sa.Nombre = fila["Nombre"].ToString();
                sa.Precio = float.Parse(fila["Precio"].ToString());
                sa.Tipo_ServicioRef = new Servicio_Adicional_Tipo();
                sa.Tipo_ServicioRef.Nombre = fila["Tipo"].ToString();
                sa.Tipo_ServicioRef.Id= int.Parse(fila["TipoId"].ToString());
                //PROVEEDOR DE SERVICIO
                sa.Proveedor_ServicioRef = new Servicio_Adicional_Proveedor();
                sa.Proveedor_ServicioRef.Id = int.Parse(fila["ProvServId"].ToString());
                sa.Proveedor_ServicioRef.Nombre= fila["ProvServNombre"].ToString();
                lista.Add(sa);
            }
            return lista;
        }

        public DataView buscarProveedores(int idTipoServicio)
        {
            Servicio_Adicional_Data proveedorServicio = new Servicio_Adicional_Data();

            DataView dataView = proveedorServicio.buscarProveedores(idTipoServicio);
            return dataView;
        }


    }
}
